// pages/service/productDetail/productDetail.js
import request from "../../../utils/request"
const app = getApp();
Page({

  /**
   * 页面的初始数据
   */
  data: {
    familyList:'',
    selectedIndex: '',
    serviceTime: '',
    isPreviewOpen: false,
    prewImage: '/images/pic-01.png',
    nowDate: '',
    userInfo:'',
    nursingItemDetail:'',
    nursingItemId:'',

    showModal:false,
    selectedElderlyId: '',  // 用于存储选中的 elderlyId
    selectedElderName:''
  },

  //开启预览
  openPreview() {
    this.setData({
      isPreviewOpen: true
    })
  },
  //关闭预览
  closePreview() {
    this.setData({
      isPreviewOpen: false
    })
  },

  onFamilyChange(e) {
    // 1. 获取选中项的索引
    const newIndex = e.detail.value;
    // 2. 根据索引获取选中的对象
    const selectedItem = this.data.familyList[newIndex];
    // 3. 提取选中项的 elderlyId
    const selectedElderlyId = selectedItem?.elderlyId || '';
    // 4.选中的老人名称
    const selectedElderName = selectedItem?.name || '';

    // 4. 将索引和 elderlyId 存储到页面数据中（供后续使用）
    this.setData({
      selectedIndex: newIndex,
      selectedElderlyId: selectedElderlyId,
      selectedElderName:selectedElderName
    });

    // 验证：打印选中的 elderlyId（可根据业务需求删除）
    console.log('选中的 elderlyId：', selectedElderlyId);
    console.log('选中的 elderlyName：', selectedElderName);

  },

  onTimeChange(e) {
    this.setData({
      serviceTime: e.detail.value
    });
  },

  toConfirm() {
    if (this.data.selectedIndex == '') {
      wx.showToast({
        title: '请选择您要服务的家人',
        icon: 'none'
      })
      return;
    }
    if (this.data.serviceTime == '') {
      wx.showToast({
        title: '请选择时间...',
        icon: 'none'
      })
      return;
    }
    console.log("用户选择了新的家人，索引是:", this.data.selectedIndex);
    console.log("用户选择了新的家人，老人id是:", this.data.selectedElderlyId);
    console.log("用户选择了新的家人，老人姓名是:", this.data.selectedElderName);
    console.log('用户选择的时间:', this.data.serviceTime);
     // 1. 获取需要传递的数据
  const { selectedElderlyId,selectedElderName,nursingItemDetail, serviceTime } = this.data;

  // 2. 序列化对象（关键：将 nursingItemDetail 转为字符串）
  const nursingItemStr = JSON.stringify(nursingItemDetail);
  const encodedElderName = encodeURIComponent(selectedElderName || ''); // 兜底空字符串

  // 3. 拼接 URL 参数跳转（注意编码特殊字符，可选 encodeURIComponent）
  wx.navigateTo({
    url: `/pages/my/confirmorder/confirmorder?selectedElderlyId=${selectedElderlyId}&selectedElderName=${encodedElderName}&nursingItemDetail=${encodeURIComponent(nursingItemStr)}&serviceTime=${serviceTime}`,
  });
  },


  toService() {
    wx.navigateBack();
  },
  //查询任务详情
  queryNursingItemDetail(){
      request({
        url: `/serve/project/${this.data.nursingItemId}`, // 调用后端获取任务详情信息接口
        method: 'GET'
      }).then(resp => {
        console.log('获取任务详情信息成功，后端返回：', resp);
        if(resp.data.code==200){
          this.setData({
            nursingItemDetail:resp.data.data
          })
        }
  
      }).catch(err => {
        // 获取用户信息请求失败处理
        console.error('获取任务详情信息失败：', err);
        wx.showToast({
          title: '获取任务详情信息失败，请重试',
          icon: 'none'
        });
      });
  },
//查询绑定家人
/**
   * 获取老人关联的床位、房间及房型信息（带防缓存处理）
   * 对应后端接口：GET /elderly/room/info
   */
  async getElderlyRoomInfo() {
    // 1. 获取本地登录用户信息（传递wxUserId筛选数据）
    const loginUserInfo = wx.getStorageSync('loginUserInfo');

    try {
      // 2. 发起请求（加_t参数禁用缓存，确保每次都是新请求）
      const res = await request({
        url: '/elderly/room/info',
        method: 'GET',
        data: {
          wxUserId: loginUserInfo?.userId || null,
          _t: new Date().getTime() // 关键：时间戳参数，避免GET请求缓存
        },
        loadingText: '加载老人居住信息中...',
        errorText: '获取居住信息失败'
      });

      // 3. 处理接口响应（适配页面familyList需要的字段格式）
      if (res.statusCode === 200) {
        console.log("获取的原始数据", res);
        // 确保数据是数组，避免map报错
        const elderlyRoomList = Array.isArray(res.data) ? res.data : [];

        // 核心：基于 elderlyId 去重，用 Map 保留唯一记录
        const uniqueElderlyMap = new Map();
        elderlyRoomList.forEach(item => {
          // 以 elderlyId 为 key，若 Map 中没有则添加（避免重复）
          if (!uniqueElderlyMap.has(item.elderlyId)) {
            uniqueElderlyMap.set(item.elderlyId, item);
          }
        });

        // 将去重后的 Map 转为数组，再格式化为页面需要的结构
        const dynamicFamilyList = Array.from(uniqueElderlyMap.values()).map(item => ({
          name: item.elderlyName, // 老人姓名
          relation: '家属', // 暂用默认关系（可后续从接口获取）
          bed: `${item.roomType}${item.roomNo}-${item.bedNo}`, // 床位格式拼接
          avatar: item.photo || '/images/family.png', // 头像（优先接口数据，无则用默认图）
          bindingId: item.bindingId, // 绑定ID（用于解绑）
          elderlyId: item.elderlyId // 老人ID（备用）
        }));

        console.log(`去重前数据量：${elderlyRoomList.length}，去重后数据量：${dynamicFamilyList.length}`);

        // 更新页面数据（覆盖旧列表，关闭加载）
        this.setData({
          elderlyRoomList: elderlyRoomList, // 保存原始数据（备用）
          familyList: dynamicFamilyList, // 赋值给页面渲染列表
          isLoading: false, // 关闭加载动画
          hasData: dynamicFamilyList.length > 0 // 标记是否有数据（控制空状态）
        });
        if(dynamicFamilyList.length>0){
          this.setData({
            showModal:false
          })
        }
        console.log('老人信息加载成功，动态列表：', dynamicFamilyList);
      } else {
        console.log('获取老人信息失败，响应：', res);
        wx.showToast({
          title: res.data.msg || '获取信息失败',
          icon: 'none',
          duration: 2000
        });
        this.setData({
          isLoading: false
        });
      }
    } catch (err) {
      // 网络异常处理
      console.error('获取老人信息请求异常：', err);
      wx.showToast({
        title: '网络异常，请稍后重试',
        icon: 'none',
        duration: 2000
      });
      this.setData({
        isLoading: false
      });
    }
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    // 获取当前用户信息
    const userInfo = wx.getStorageSync('loginUserInfo');
    const now = new Date();
    const year = now.getFullYear();
    const month = String(now.getMonth() + 1).padStart(2, '0'); 
    const day = String(now.getDate()).padStart(2, '0'); 
    const formatDate = `${year}-${month}-${day}`;
    const id = options.id; // 这里的id就是传递过来的item.id
    console.log("当前选中的item id是：", id);
    this.setData({
      nowDate: formatDate ,
      showModal:true,
      userInfo:userInfo,
      nursingItemId:id
    });
    //获取项目详情
    this.queryNursingItemDetail();
    this.getElderlyRoomInfo();
  },
  onConfirm() {
    // 点击按钮后的逻辑
    this.setData({ showModal: false });
    wx.navigateTo({
      url: '/pages/logs/bdjr/ljbd/ljbd',
    })
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})